<?php

class Aplicaciones_model extends CI_Model {

    function __construct() {
        parent::__construct();
    }

    public function extraeAplicacion($aplicacionId, $instrumentoId, $transaccion = null, $modalidadId = null) {
        /* Funcion para extraer toda la informacion de un instrumento aplicado */
        switch ($instrumentoId) {
            case '3':
                $transaccion1 = $transaccion + 1;
                $transaccion2 = $transaccion + 2;
                $transaccion3 = $transaccion + 3;
                //$return = array();
                $sql = "select apli.*,det.`aplicaInstDetResp`,det.`aplicaInstDetRespText`,`aplicaInstDetTiene`,det.`aplicaInstDetRuta`,det.`aplicaInstDetId`,det.`preguntaId`,apli.direccion,apli.municipioId from aplicainstrumento apli 
                        left join aplicainstrumentodetalles det on det.`aplicaInstId` = apli.`aplicaInstId`
                        where apli.`aplicaInstId` = '$aplicacionId'";
                $return["principal"] = $this->db->query($sql);
                //inserta todos los participantes del grupo focal
                $sql = "insert into temporal(transaccion,`indiceInt`) select '$transaccion3',participanteId from grupos_focales where aplicaInstId = '$aplicacionId'";
                $this->db->query($sql);
                //Inserta toda la informacion de las graficas
                $this->insertaGrafica($aplicacionId, $transaccion);
                //Se obtienen las otras pestañas asociadas
                $sql = "select * from aplicainstrumento where `aplicaInstId1` = '$aplicacionId' order by `aplicaInstId1` asc";
                $result = $this->db->query($sql);
                $con = 0;
                foreach ($result->result() as $row) {
                    $sql = "select * from aplicainstrumento apli 
                            inner join aplicainstrumentodetalles det on det.`aplicaInstId` = apli.`aplicaInstId`
                            where apli.`aplicaInstId` = '{$row->aplicaInstId}'";
                    switch ($con) {
                        case 0: //almacena la segunda pestaña
                            $return["segunda"] = $this->db->query($sql);
                            $this->insertaGrafica($row->aplicaInstId, $transaccion1);
                            break;
                        case 1: //almacena la segunda pestaña
                            $return["tercera"] = $this->db->query($sql);
                            $this->insertaGrafica($row->aplicaInstId, $transaccion2);
                            break;
                    }
                    $con++;
                } //fin foreach($result->result() as $row){
                return $return;
                break;
            case '4':
                $sql = "select `aplicaInstId` from aplicainstrumento where `instrumentoId` = '$instrumentoId' and `usuarioId` = '{$this->session->userdata("usuarioId")}'";
                $aplicaId = $this->db->query($sql); //
                if ($aplicaId->num_rows() > 0) {
                    $aplicaId = $aplicaId->result();
                    $aplicaId = $aplicaId[0]->aplicaInstId;
                    //inserta todos los participantes del grupo focal
                    $sql = "insert into temporal(transaccion,`indiceInt`) select '$transaccion',participanteId from grupos_focales where aplicaInstId = '$aplicaId'";
                    $this->db->query($sql);
                    $sqlPrincipal = "select *,apli.aplicaInstId as aplicaPrincipal,apli.`modalidadId` as modaId from aplicainstrumento apli 
                        left join aplicainstrumentodetalles det on det.`aplicaInstId` = apli.`aplicaInstId`
                        where apli.`aplicaInstId` = '$aplicaId' and apli.`usuarioId` = '{$this->session->userdata("usuarioId")}'";
                    return $this->db->query($sqlPrincipal);
                }
                return;
                break;
            case '18':
                $sql = "select `aplicaInstId` from aplicainstrumento where `instrumentoId` = '$instrumentoId' and `usuarioId` = '{$this->session->userdata("usuarioId")}'";
                $aplicaId = $this->db->query($sql); //
                if ($aplicaId->num_rows() > 0) {
                    $aplicaId = $aplicaId->result();
                    $aplicaId = $aplicaId[0]->aplicaInstId;
                    //inserta todos los participantes del grupo focal
                    $sql = "insert into temporal(transaccion,`indiceInt`) select '$transaccion',participanteId from grupos_focales where aplicaInstId = '$aplicaId'";
                    $this->db->query($sql);
                    $sqlPrincipal = "select *,apli.aplicaInstId as aplicaPrincipal from aplicainstrumento apli 
                        left join aplicainstrumentodetalles det on det.`aplicaInstId` = apli.`aplicaInstId`
                        where apli.`aplicaInstId` = '$aplicaId' and apli.`usuarioId` = '{$this->session->userdata("usuarioId")}'";
                    return $this->db->query($sqlPrincipal);
                }
                return;
                break;
            case '5':
                $sql = "select *,apli.`aplicaInstId` as pliId,apli.`modalidadId` as modaId from aplicainstrumento apli 
                        left join aplicainstrumentodetalles det on det.`aplicaInstId` = apli.`aplicaInstId`                        
                        where apli.`aplicaInstId` = '$aplicacionId' ";
                return $this->db->query($sql);
                break;
            case '6':
                $sql = "select *,apli.`aplicaInstId` as pliId from aplicainstrumento apli 
                        inner join programas prog on prog.`programaId` = apli.`programaId`
                        inner join municipios mun on mun.`municipioId` = prog.`municipioId`
                        left join aplicainstrumentodetalles det on det.`aplicaInstId` = apli.`aplicaInstId`
                        where apli.`aplicaInstId` = '$aplicacionId'";
                return $this->db->query($sql);
                break;
            case '7':
                $sql = "select * from aplicainstrumento apli 
                        inner join aplicainstrumentodetalles det on det.`aplicaInstId` = apli.`aplicaInstId`
                        where apli.`instrumentoId` = '$instrumentoId' and apli.`usuarioId` = '{$this->session->userdata("usuarioId")}'";
                return $this->db->query($sql);
                break;
            case '8':
                $sql = "select * from aplicainstrumento apli 
                        inner join aplicainstrumentodetalles det on det.`aplicaInstId` = apli.`aplicaInstId`
                        where apli.`instrumentoId` = '$instrumentoId' and apli.`usuarioId` = '{$this->session->userdata("usuarioId")}'";
                return $this->db->query($sql);
                break;
            case '9':
                $sqlAux = ($this->session->userdata("usuarioId_externo"))?" and apli.`departamentoId` = '{$this->session->userdata("departamentoId")}' ":" and apli.`usuarioId` = '{$this->session->userdata("usuarioId")}' ";
                $sql = "select `aplicaInstId` from aplicainstrumento apli where apli.`instrumentoId` = '$aplicacionId' $sqlAux and apli.`modalidadId` = '$modalidadId' order by apli.`aplicaInstFechaCreo` limit 1";
//                exit($sql);
                $aplicaId = $this->db->query($sql); //
                if ($aplicaId->num_rows() > 0) {
                    $aplicaId = $aplicaId->result();
                    $aplicaId = $aplicaId[0]->aplicaInstId;
                    //inserta todos los participantes del grupo focal
                    $sql = "insert into temporal(transaccion,`indiceInt`) select '$transaccion',participanteId from grupos_focales where aplicaInstId = '$aplicaId'";
                    $this->db->query($sql);
                    $sqlPrincipal = "select *,apli.aplicaInstId as aplicaPrincipal from aplicainstrumento apli 
                        left join aplicainstrumentodetalles det on det.`aplicaInstId` = apli.`aplicaInstId`
                        where apli.`aplicaInstId` = '$aplicaId' $sqlAux ";
                    return $this->db->query($sqlPrincipal);
                }
                return;
                break;
            default : //para 1,2
                $sql = "select *,apli.`aplicaInstId` as pliId,apli.`modalidadId` as modApli from aplicainstrumento apli 
                        left join aplicainstrumentodetalles det on det.`aplicaInstId` = apli.`aplicaInstId`
                        inner join participantes part on part.`participanteId` = apli.`participanteId`
                        where apli.`aplicaInstId` = '$aplicacionId'  ";
                return $this->db->query($sql);
                break;
        }
    }

// fin public function extraeAplicacion($aplicacionId,$instrumentoId){

    private function insertaGrafica($aplicaId, $transaccion) {
        /* Funcion para guardar la informacion en la temporal segun las graficas */
        $sql = "select detDos.*,det.`preguntaId` from aplicainstrumentodetallesdos detDos
                inner join aplicainstrumentodetalles det on det.`aplicaInstDetId` = detDos.`aplicaInstDetId`
                inner join aplicainstrumento apli on apli.`aplicaInstId` = det.`aplicaInstId`
                where apli.`aplicaInstId` = '$aplicaId'";
        $grficas = $this->db->query($sql);
        foreach ($grficas->result() as $row) {
            $sql = "insert into temporal(transaccion,varchar1,varchar2,`indiceInt`) values(
                        '$transaccion','{$row->aplicaInstDetDosVarchar1}','{$row->aplicaInstDetDosVarchar2}','{$row->preguntaId}')";
            $this->db->query($sql);
        }
    }

//fin private function insertaGrafica($aplicaId, $transaccion){
    public function paises($partId) {
        /* funcion para extrar todos los paises que esta sujetos a un participante */
        $sql = "select * from participantes_por_paises parPai
                inner join paises pai on pai.`paisId` = parPai.`paisId`
                where parPai.`participanteId` = '$partId' order by pai.`paisNombre`";
        return $this->db->query($sql);
    }

//fin public function paises($partId){

    public function snies($partId, $opc) {
        /* Funcion para obtener los programas que tiene asignado o que son del departamento */
        switch ($opc) {
            case 'dep':
                $dep = $this->session->userdata("departamentoId");
                $sql = "select prog.programaId,prog.programaNombre,prog.`programaInstitucion`,prog.`programaCodigo` from programas prog
                        inner join municipios mun on mun.`municipioId` = prog.`municipioId`
                        where mun.`departamentoId` = '$dep' and prog.`programaEstado` = 'A' order by prog.`programaInstitucion`, prog.programaNombre";
                break;

            case 'asig':
                $sql = "select parProg.programaId,prog.programaNombre,prog.`programaInstitucion`,prog.`programaCodigo` from participantes_por_programas parProg
                        inner join programas prog on prog.programaId = parProg.programaId
                        inner join participantes par on par.participanteId = parProg.participanteId
                        where parProg.participanteId = '$partId' and prog.`programaEstado` = 'A' order by prog.`programaNombre`";
                break;
        }
        return $this->db->query($sql);
    }

//fin public function snies($partId,$opc){

    public function extraCabAplicaciones($instrumento, $usuarioId, $modalidadId) {
        /* Funcion para extraer la informacion de cabecera de todas las aplicaciones realizadas */
        $sqlAux = ($this->session->userdata("usuarioId_externo"))?" apli.`departamentoId` = '{$this->session->userdata("departamentoId")}' and ":" apli.`usuarioId` = '$usuarioId' and ";
        switch ($instrumento) {
            case '3':
                $sql = "select * from aplicainstrumento apli
                        inner join agentes agen on agen.`agenteId` = apli.`agenteId`
                            where $sqlAux apli.`instrumentoId` = '$instrumento' and apli.`aplicaInstId1` is null  order by apli.`aplicaInstFecha`,agen.`agenteNombre` ";
                $result = $this->db->query($sql);
                $result = ($result->num_rows() <= 0) ? -1 : $result;
                return $result;
                break;
            case '18': //extrae todos los instrumentos de campo No. 10
                $sql = "select * from aplicainstrumento apli                        
                            where apli.`instrumentoId` = '$instrumento' and `departamentoId` = '$usuarioId' order by apli.`aplicaInstFecha` ";
                $result = $this->db->query($sql);
                $result = ($result->num_rows() <= 0) ? -1 : $result;
                return $result;
                break;

            default:
                $sql = "select * from aplicainstrumento apli
                        inner join agentes agen on agen.`agenteId` = apli.`agenteId`
                        where $sqlAux apli.`instrumentoId` = '$instrumento' and apli.`modalidadId` = '$modalidadId' order by apli.`aplicaInstFecha`,agen.`agenteNombre` ";
                $result = $this->db->query($sql);
                $result = ($result->num_rows() <= 0) ? -1 : $result;
                return $result;
                break;
        }
    }

//fin public function extraCabAplicaciones($instrumento,$usuarioId,$modalidadId){

    public function extraeAplicacionesCordi($aplicacion, $instrumento, $transaccion) {
        /* Extrae toda la informacion de los instrumentos que pertenecen a un departamento y de los cuales se filtran por informacion asociada al usuario */
        switch ($instrumento) {
            case '4':
                //inserta todos los participantes del grupo focal
                $sql = "insert into temporal(transaccion,`indiceInt`) select '$transaccion',participanteId from grupos_focales where aplicaInstId = '$aplicacion'";
                $this->db->query($sql);
                $sqlPrincipal = "select *,apli.aplicaInstId as aplicaPrincipal,apli.`modalidadId` as modaId from aplicainstrumento apli 
                        left join aplicainstrumentodetalles det on det.`aplicaInstId` = apli.`aplicaInstId`
                        where apli.`aplicaInstId` = '$aplicacion'";
                return $this->db->query($sqlPrincipal);
                break;

            default:
                break;
        }
    }

//fin public function extraeAplicacionesCordi($aplicacion,$instrumento,$transaccion){

    public function extraeTerceros($usuarioId, $opc) {
        /* Obtiene todos los instrumentos numero 3 de un departamento determinado */
        switch ($opc) {
            case '1':
                $sql = "select * from aplicainstrumento apli
                inner join usuarios usr on usr.usuarioId = apli.usuarioId
                where apli.`instrumentoId` = '3' and usr.`departamentoId` = '$usuarioId' and apli.aplicaInstId1 is null order by apli.`aplicaInstFechaCreo`";
                break;
            default:
                $sql = "select * from aplicainstrumento where `instrumentoId` = '3' and `usuarioId` = '$usuarioId' order by `aplicaInstFechaCreo`";
                break;
        }
        return $this->db->query($sql);
    }

}

//fin class
?>
